[SORACOM Technology Camp 2018 レポート] SORACOMで実現するデバイス管理 #soracom
こんにちは、菊池です。
本日(2018/04/26)、大崎ブライトコアホールで開催れている、IoTプラットフォームのラーニングイベント、SORACOM Technology Camp 2018に参加しています。
この記事は、トラックBセッションの3つ目、「SORACOMで実現するデバイス管理」の聴講レポートです。セッションスライドはこちら。
セッション概要
IoTアプリケーションでは、多数のデバイス、車両、センサーなどを効率的に管理することが求められます。SORACOMの大きな特徴として、すべての機能がAPI経由で利用できるという点があります。 例えばSORACOM AirのAPIでは、現在オンラインになっている回線のリストを取得したり、それらの回線のリアルタイムな通信量を取得することができ、指定の通信量を超えたらAWS Lambdaによる自前の処理を呼び出すというようなことができます。また、SORACOM Inventoryでは回線だけでなくデバイスの状態を調べたり、コマンドを実行させたりすることができます。 これらのAPIを活用することにより、数千、数万の回線やデバイスを管理するシステムの実装方法を、いくつかのユースケースをもとに、実例を交えながらご紹介します。
株式会社ソラコム ソリューションアーキテクト 今井 雄太 /factory
レポート
アジェンダ
- デバイス管理って?どうして必要なの?
- SORACOMで実現するデバイス管理のケーススタディ
- まとめと結論
デバイス管理って?どうして必要なの?
- 例えばGPSによる車両管理
- GPSトラッカーから1分ごとに緯度経度を送信、地図上にマッピングする
- 「SIM」をデバイスにさして設置したら勝手に動くようにしたい
- SIMと車両の紐付け
- 新規車両の発注とワークフローを統合したい
- いまオンラインの車両は?
- 最後にオンラインになていた時間は?
- SIMが盗まれても別の用途に使われないようにしたい
- 例えばスマートメーター
- 1日に1回、ガスの利用料を送信、閾値を超えたらユーザにプッシュして利用を止めるようにしたい
- 在庫としてストックしていたデバイスの利用開始タイミングを知りたい
- 設置先固有の情報を、起動時に初期設定したい
- メーターの設定を変更したい
- メーターのオンライン/オフラインのタイミングを把握したい
- 1習慣以上オンラインになっていない物を把握したい
- 他にも
- デバイスごとの通信量管理
- 通信先/プロトコルを制限したい
- クライント証明書を安全に配布するには
- デバイスのIDはどうやって管理したらいい?
- デバイス管理とは
- デバイスが本来の仕事をできるようにするために、必要な準備やメンテナンス、監視
- デバイスが数百、数万になったら?
SORACOMで実現するデバイス管理のケーススタディ
ケーススタディ:GPSによる車両管理
- SIM:デバイス=1:1
- 各種APIによるSIM(その先にいるデバイス)の操作(IMSI)
- SORACOM Inventory デバイスの直接操作
- SORACOM Beam デバイスデータにIMSIや署名の付与
- ワークフローを考えてみる
1. 使い始めるまで
- デバイス発注
- SIM発注
- デバイスとSIMの紐付け
- 初期設定・動作確認
- 在庫としてストック
- 発送・設置
- 利用開始
- SORACOMは2以降
- SIM発注
- これまで:SIMとデバイス別々に発注していた...
- SORACOMなら:APIで発注するので業務システムから発注が可能
- SIMを社内システムのDBに登録したり
- SORACOM上でタグ付け、グルーピングしたり
- デバイスとSIMの紐付け
- これまで:大量のデバイスとSIMを手作業でマッチング
- SORACOMなら:SORACOM Beamの署名付与機能でIMSI/IMEI/TIMESTAMP/署名を付与
- デバイスにSIMを入れて起動
- SORACOM Beam で登録することで紐付け
- 初期設定・動作確認
- これまで:手作業で実施
- SORACOMなら:メタデータサービスでかなりの部分を自動化可能
- SIMのIMSIやメタデータを取得できる
- 起動したらメタデータから初期設定スクリプトを取得(メタデータの話はこれだけ)
- 初期設定スクリプトにしたがって、BeamによるSIMとデバイスを紐付け
- スクリプトにしたがって動作確認が実行され結果をクラウドに送信、記録しておく
- デバイスのバーコードをスキャンすると上記の状況を確認できると便利!
- 在庫としてストック
- これまで:在庫期間のSIMにもランニングコストが発生していた
- SORACOMなら:グローバルSIMなら通信確認後、ランニングコストが発生しない状態にしておける
- 「利用開始待ち」状態にすることで利用料をゼロに
- 利用開始
- これまで:手動で管理簿に記録
- SORACOMなら:利用開始時に自動で「利用開始待ち」から「使用中」に切り替えられる
- イベントハンドラ:SIMが「使用中」になったことをトリガーにWebhookやLambdaを飛び出せる
2. 使い始めてから
- 証明書や鍵などの安全な交換
- 日々のオンライン状態やレポート
- 設定やファームウェアの更新
証明書や鍵などの安全な交換
- 安全に交換するには安全な経路が必要
- SORACOMならSIMを鍵として利用可能
- 例えば、Beam/Endorseを使ってAWS IoTの証明書をデバイスに安全に配布することができる
- SIMによるデバイスの認証が可能に
日々のオンライン状態や通信量のレポートを作成
- SIM:デバイス=1:1が成り立っていることでSIM単位で簡単に利用料の確認ができます
- もちろんAPIで取得できる
設定やファームウェアの更新
- デバイスへの書き込みにはやり方がたくさん
- デバイス->サーバにポーリング
- デバイス<->サーバでMQTTセッション
- サーバからデバイス(IP)へPush(HTTP/FTP)
- LWM2Mを使ったやりとり
- どれを選べばいいの?
- デバイスによりけり
- SORACOM Inventory
- LWM2Mというプロトコルを使ったデバイス管理のためのサービス
- UDP/共通鍵暗号/COAPなど軽量な通信スタック
- サーバ/デバイスで共通のメッセージモデル(スキーマ)をあらかじめ共有しておくことで軽量なメッセージ
- SORACOM Inventoryの実態はAPIで制御できるLWM2Mサーバ
- 事前共有鍵はSORACOM Airで安全に共有
- リソースモデル:/オブジェクト/インスタンス/リソース(例:/3/0/9)
- 新機能
- InventoryエージェントのイベントをBeam/Funnel/Harvestへ
- カスタムモデル定義をサポート
3. 異常を防ぐために
- 用途以外の利用を制限する
- IMEIロック:IMEI(モデムのユニークなID)とSIMの紐付け
- Canal/Direct/Doorを使えば社内でNW以外に繋がらないように
- Junctionを使えばインフラレベルのフィルタリングも可能
- 用途以外の利用を検知する
- イベントハンドラを使って閾値監視、処理を実装
- Junctionを使ったミラーリングでパケットを監査
まとめと結論
- ただの通信サービスではなく、デバイス/通信を管理する
- 「SIM」を鍵/証明書としてデバイスを管理
- アプリケーションの本分出ない部分はSORACOMにオフロードを
- 純粋な通信サービスとしてだけでは、SORACOMの旨味はあまり出ない
まとめ
SORACOMのサービスを活用することで、デバイス管理をかなり省力化できそうです。